In a typical distributed computing environment, different components and objects that comprise one or more applications reside on different computing devices, connected to each other in a network. Information and processing capability may be distributed amongst the computing devices in the network, and each of the computing devices may be permitted access to the others as needed. Components may communicate with each other through a connection for data communications (e.g. a Transmission Control Protocol (TCP) connection), or using some other communications protocol (e.g. User Datagram Protocol (UDP)).
Consider, for example, the situation where peer-to-peer (P2P) communication is to take place between two components residing on different computing devices. A connection may be established between the two components to facilitate communications. Since the components are in a peer-to-peer relationship and not in a client-server relationship, both components have equal status in the arrangement and each of the two components is independently capable of initiating the establishment of such connections. Since each of the two components may establish a connection with the other independently, it is possible that multiple connections between the same two components may be established and may exist simultaneously.
However, managing multiple connections between the two components may be unnecessary and may result in a waste of resources, particularly when each of the connections is adapted to facilitate bi-directional data communications (e.g. TCP).